<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>228. 汇总区间</title>
  </head>
  <body>
    <script>
      //     给定一个  无重复元素 的 有序 整数数组 nums 。

      // 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说，nums 的每个元素都恰好被某个区间范围所覆盖，并且不存在属于某个范围但不属于 nums 的数字 x 。

      // 列表中的每个区间范围 [a,b] 应该按如下格式输出：

      // "a->b" ，如果 a != b
      // "a" ，如果 a == b
      //

      // 示例 1：

      // 输入：nums = [0,1,2,4,5,7]
      // 输出：["0->2","4->5","7"]
      // 解释：区间范围是：
      // [0,2] --> "0->2"
      // [4,5] --> "4->5"
      // [7,7] --> "7"
      // 示例 2：

      // 输入：nums = [0,2,3,4,6,8,9]
      // 输出：["0","2->4","6","8->9"]
      // 解释：区间范围是：
      // [0,0] --> "0"
      // [2,4] --> "2->4"
      // [6,6] --> "6"
      // [8,9] --> "8->9"
      //

      // 提示：

      // 0 <= nums.length <= 20
      // -231 <= nums[i] <= 231 - 1
      // nums 中的所有值都 互不相同
      // nums 按升序排列

      // 来源：力扣（LeetCode）
      // 链接：https://leetcode.cn/problems/summary-ranges
      // 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
      /**
       * @param {number[]} nums
       * @return {string[]}
       */
      var summaryRanges = function (nums) {
        if (nums.length === 0) {
          return []
        }
        let arr = []
        let fristNum = null
        for (let i = 0; i < nums.length - 1; i++) {
          if (nums[i + 1] - nums[i] === 1) {
            if (fristNum === null) {
              fristNum = nums[i]
            }
          } else {
            if (fristNum === null) {
              arr.push(nums[i] + '')
            } else {
              arr.push(`${fristNum}->${nums[i]}`)
              fristNum = null
            }
          }
        }

        if (fristNum !== null) {
          arr.push(`${fristNum}->${nums[nums.length - 1]}`)
        } else {
          arr.push(nums[nums.length - 1] + '')
        }
        return arr
      }
    </script>
  </body>
</html>
